package com.santoker.user.service.service.biz.auth;

import com.santoker.baseservice.redis.AuthInfo;
import com.santoker.user.service.dto.vo.auth.*;
import com.santoker.user.service.dto.vo.user.UserInfoModifyVo;

public interface AuthService {

    /**
     * 手机号注册
     *
     * @param body 请求体
     * @return
     */
    RegisterResponseVo register(RegisterVo body);

    /**
     * 邮箱注册
     *
     * @param body 请求体
     * @return
     */
    RegisterResponseVo emailRegister(EmailRegisterVo body);

    /**
     * 手机号登录
     *
     * @param body 请求体
     * @return
     */
    LoginResponseVo mobileLogin(LoginVo body);

    /**
     * 邮箱登录
     *
     * @param body 请求体
     * @return
     */
    LoginResponseVo emailLogin(LoginVo body);

    /**
     * 重置密码
     *
     * @param body 请求体
     */
    void resetPassword(ResetVo body);

    /**
     * 修改用户信息
     *
     * @param userId 用户ID
     * @param body   请求体
     */
    void modifyUser(Integer userId, UserInfoModifyVo body);

    /**
     * 登出
     *
     * @param authInfo 用户信息
     */
    void logout(AuthInfo authInfo);

    /**
     * 微信授权登录（已作废）
     *
     * @param body 请求体
     * @return
     */
    LoginResponseVo wxLogin(WxLoginVo body);

    /**
     * 微信授权登录
     *
     * @param body 请求体
     * @return
     */
    LoginResponseVo wxLoginV2(WxLoginVo body);

    /**
     * 微信绑定
     *
     * @param body 请求体
     * @return
     */
    LoginResponseVo wxBind(WxBindVo body);

    /**
     * 微信解绑
     *
     * @param authInfo 用户信息
     */
    void wxUnbind(AuthInfo authInfo);

    /**
     * 微信绑定当前登录账号
     *
     * @param body     请求体
     * @param authInfo 用户信息
     * @return
     */
    LoginResponseVo wxBind2(WxBind2Vo body, AuthInfo authInfo);

    /**
     * 手机号/邮箱绑定
     *
     * @param body     请求体
     * @param authInfo 用户信息
     * @return
     */
    LoginResponseVo mobileEmailBind(MobileEmailBindVo body, AuthInfo authInfo);

    /**
     * 固件更新
     *
     * @param body 请求体
     * @return
     */
    VersionVo firmwareUpdate(FirmwareUpdateVo body);

}
